package ec.edu.ups.cidi.siia.plamdep.webcrawler.extractorlinks;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import ec.edu.ups.cidi.siia.plamdep.configuracion.ConfiguracionConexionWeb;
import ec.edu.ups.cidi.siia.plamdep.modelo.webcrawler.Bibliografia;
import ec.edu.ups.cidi.siia.plamdep.utils.Log;
import ec.edu.ups.cidi.siia.plamdep.webcrawler.descarga.HtmlUtils;

public class LinksYahoo implements IExtractorLinks
{
    private ArrayList<Bibliografia> resultados=new ArrayList<Bibliografia>(); //el listado de links encontrados
    private HtmlUtils utils=new HtmlUtils();

    public void sacaLinks(String html)
    {
    	try{
    	 html=html.replaceAll("\n"," ");
         html=HtmlUtils.contentBetween(html, "<ol class=\" reg searchCenterMiddle\">", "</ol>");
         html=html.replace("<li", "\n<li");
         String []lis=html.split("\n");
         for(String li:lis)
         { 
        	 try{
        	 String url=HtmlUtils.contentBetween(li,"href=\"","\" target");
             url=HtmlUtils.decodeURL(url); 
        	 String resume=HtmlUtils.contentBetween(li,"<p class=\"lh-18\">","</p>");
        	 resume=HtmlUtils.htmlToText(resume);
        	 
          	 if(url.length()>0)	
          	 {
          		 //Utils.log(null, Utils.MOD_WEBCRAWLER, Utils.LEVEL_MSG, LinksYahoo.class, "URL:"+url);
          		 //Utils.log(null, Utils.MOD_WEBCRAWLER, Utils.LEVEL_MSG, LinksYahoo.class, "Resume:"+resume+"\n");
          		 this.resultados.add(new Bibliografia(url,resume));
          		  if(resultados.size()>=ConfiguracionConexionWeb.limite_results)//limita el numero de resultados
                    	return;
                  
          	 }
        	 }catch(Exception ex){} 
         } 
    	}catch(Exception e){};
    }
    ArrayList<String> lis=new ArrayList<String> ();
    public void obtenerLIS(String html)
    {
        Pattern p=Pattern.compile("(<li\\s)|(<li>)");
        Matcher m=p.matcher(html); 
        if(m.find())
        {
            Pattern p1=Pattern.compile("</li>");
            Matcher m1=p1.matcher(html); 
            if(m1.find())
            {
                    String li=html.substring(m.start(), m1.end());
                    lis.add(li);
                    html=html.substring(m1.end(), html.length()-1);
                    this.obtenerLIS(html);
            }
        }
    }
    
    public ArrayList<Bibliografia> getLinks() {
        return this.resultados;
    }
    
    public void setContenidoHTML(String html) {
            sacaLinks( html);
    }
}